linux 打印机的使用

·

配置样例

ippfind
avahi-resolve -n EPSON4DDFDF.local
getent hosts EPSON4DDFDF.local

ipptool -tv ipp://EPSON4DDFDF.local:631/ipp/print /usr/share/cups/ipptool/get-printer-attributes.test | grep -i device-id -C3

# 无驱动安装打印机(最简单、最稳定)
lpip=192.168.4.143  # ← 替换为你的打印机 IP
sudo lpadmin -p Epson_L4160_Driverless \
  -E \
  -v "ipp://$lpip:631/ipp/print" \
  -m everywhere

lpip=192.168.4.143  # ← 替换为你的打印机 IP
sudo apt update && sudo apt install printer-driver-escpr
lpinfo -m | grep -i "L4160"
sudo lpadmin -p Epson_L4160_Full \
  -E \
  -v "ipp://$lpip/ipp/print" \
  -m "epson-inkjet-printer-escpr/Epson-L4160_Series-epson-escpr-en.ppd"

# 删除打印机
sudo lpadmin -x Epson_L4160_Driverless Epson_L4160_Full

lpinfo -m | grep -i 'm329\|laserjet.pro.*mfp' | grep -v 'generic'

ip=192.168.1.100  # ← 替换为你的打印机 IP
sudo lpadmin -p M329 \
             -v "ipp://$ip:631/ipp/print" \
             -m postscript-hp:0/ppd/hplip/HP/hp-laserjet_pro_mfp_m329-ps.ppd \
             -E

# 设为默认打印机
sudo lpadmin -d M329
# 测试打印
echo "✅ M329 驱动配置成功" | lp
tail -f /var/log/cups/error_log

# 使用无驱动打印 这是最简单的方式,直接使用系统发现的驱动
# -m everywhere 参数告诉CUPS使用“无驱动”模式自动配置,这利用了你的打印机已经支持的 IPP Everywhere 标准
sudo lpadmin -p HP_LaserJet_Pro_M329 \
  -E \
  -v ipp://HP489EBD702C63.local:631/ipp/print \
  -m everywhere

echo "HP LaserJet Pro M329 测试页 - $(date)" | lpr -P HP_LaserJet_Pro_M329

常用工具功能

工具包名用途
cupsdcups-daemonCUPS 后台服务(调度器)
lp* 系列cups-client打印作业控制(lp, lpstat, lpadmin, cancel)
ipptoolcups-ipp-utilsIPP 协议底层探测(诊断必备)
avahi-browseavahi-utils浏览 DNS-SD 服务(发现打印机)
system-config-printer(CLI 调用)system-config-printer文本界面配置(备选)

|对象| 命令| 含义 |-| -| - |Scheduler| cupsd| 打印调度器 |Printer| lpadmin| 打印队列 |Job| lp / lpr| 打印任务 |Options| lpoptions| 打印参数

常用命令行

lp file.pdf                   # 用默认打印机
lp -d M329 file.pdf           # 指定打印机
lp -o sides=two-sided-long-edge file.pdf  # 双面(长边翻转)
lp -o number-up=2 file.pdf    # 1页打2版(节省纸)
cancel M329-123               # 取消作业ID 123
cancel -a M329                # 取消M329所有作业

sudo tail -f /var/log/cups/error_log

手动测试打印(绕过 CUPS 队列)

# 直接发 PDF 到 IPP 端点(需打印机支持 IPP Everywhere)
curl -X POST \
     -H "Content-Type: application/pdf" \
     --data-binary @/etc/issue \
     'ipp://192.168.1.100:631/ipp/print' \
     -o /tmp/ipp-response.bin
# 检查响应:若 200 OK 且打印机出纸 → 底层 IPP 正常,问题在 CUPS 配置

关闭cups-browsed

默认发现的打印机器常是implicitclassj性能低??

sudo systemctl stop cups-browsed
sudo systemctl disable cups-browsed

命令行使用打印机

# 第一步:发现打印机URI, 主动扫描局域网中所有支持 IPP 的设备(打印机、扫描仪、甚至 IPP 服务器)
ippfind  
# 第二步:测试连接
ipptool -tv 'ipp://EPSON4DDFDF.local:631/ipp/print' /usr/share/cups/ipptool/get-printer-attributes.test
# 第三步:添加到CUPS
sudo lpadmin -p EPSON_L4160 \
  -E \
  -v "ipp://EPSON4DDFDF.local:631/ipp/print" \
  -m everywhere

# 查看DNS-SD服务详细信息
avahi-browse -rpt _ipp._tcp

# 查看所有打印机 # 列出 CUPS 当前已注册并管理的打印机 及其内部表示的设备 URI
lpstat -p -d
# 输出示例:
# printer EPSON_L4160 is idle. enabled since Mon 2023-01-01 10:00:00 CST
# printer HP_LaserJet is idle. enabled since Mon 2023-01-01 10:00:00 CST
# system default destination: EPSON_L4160

# 查看详细打印机信息
lpstat -l -v

# 查看打印队列
lpq
# 输出示例:
# EPSON_L4160 is ready
# no entries

# 查看打印机选项
lpoptions -p <printer_name> -l# 查看所有打印机
lpstat -p -d
# 查看详细打印机信息
lpstat -l -v

# 列出所有可用驱动
lpinfo -m

添加打印机

# 添加网络打印机(IPP协议)
sudo lpadmin -p EPSON_L4160 -E \
  -v "ipp://192.168.1.100/ipp/print" \
  -m "drv:///sample.drv/generic.ppd" \
  -L "办公室"

# 参数解释:
# -p:打印机名称
# -E:启用打印机
# -v:设备URI
# -m:PPD驱动文件
# -L:位置描述

# 添加USB打印机
sudo lpadmin -p HP_Deskjet -E \
  -v "usb://HP/Deskjet?serial=XYZ123" \
  -m "ppd/hp-deskjet.ppd"

# 添加SMB共享打印机
sudo lpadmin -p Network_Printer -E \
  -v "smb://workgroup/user:password@server/printer" \
  -m "everywhere" \
  -o auth-info-required=username,password

# 发现网络打印机
ippfind
# 输出示例:ipp://EPSON%20L4160._ipp._tcp.local/

# 获取驱动信息
lpinfo --make-and-model "EPSON L4160" -m

配置打印机

# 设置默认打印机
sudo lpadmin -d EPSON_L4160

# 配置打印机选项
sudo lpadmin -p EPSON_L4160 \
  -o PageSize=A4 \
  -o Duplex=DuplexNoTumble \
  -o ColorModel=RGB \
  -o Resolution=600dpi

# 禁用/启用打印机
sudo cupsdisable EPSON_L4160
sudo cupsenable EPSON_L4160

# 拒绝/接受打印作业
cupsreject EPSON_L4160
cupsaccept EPSON_L4160

基本打印

# 基本打印
lpr document.pdf

# 指定打印机
lpr -P EPSON_L4160 document.pdf

# 指定份数
lpr -# 3 document.pdf

# 指定打印范围
lpr -o page-ranges=1-5,8,11-13 document.pdf

# 双面打印
lpr -o sides=two-sided-long-edge document.pdf

# 打印选项组合
lpr -P HP_LaserJet -o media=A4 -o sides=two-sided-short-edge -# 2 report.pdf

打印队列管理

# 查看所有打印作业
lpstat -o

# 输出示例:
# EPSON_L4160-101 user1 1024 Mon 10:00:00
# HP_LaserJet-102 user2 2048 Mon 10:01:00

# 查看特定打印机的作业
lpq -P EPSON_L4160

# 取消打印作业
lprm 101
# 或取消所有作业
lprm -

# 移动作业到另一台打印机
lpmove 101 HP_LaserJet

# 查看作业详情
lpq -l -P EPSON_L4160

高级配置

# 主要配置文件
/etc/cups/cupsd.conf      # CUPS服务配置
/etc/cups/printers.conf   # 打印机定义
/etc/cups/ppd/            # PPD驱动文件目录
/var/spool/cups/          # 打印队列目录

# 查看CUPS错误日志
sudo tail -f /var/log/cups/error_log

# 查看访问日志
sudo tail -f /var/log/cups/access_log

# 设置日志级别
sudo cupsctl LogLevel=debug

驱动方案对比(基于你的 CMD 列表)


驱动方案是否支持 PCLXL是否支持 PDF是否支持 POSTSCRIPT状态反馈推荐度
hpcups✅ 原生优化✅ 直接处理✅ Ghostscript 后端✅ 完整(墨量/卡纸)⭐⭐⭐⭐⭐
IPP Everywhere (everywhere)❌ 转 PDF✅ 原生❌ 无 PostScript⚠️ 仅基础状态⭐⭐⭐
Generic PostScript

✅ 为什么 hpcups 更优?

  • 你的打印机广播了 PCLXL(高效二进制语言),而 hpcups 会:
  • 直接生成 PCLXL → 比 PDF 转换快 20%+
  • 利用 CID:HPLJPDLV1 启用硬件级双面校准
  • 通过 PJL 查询 SN:CNDRP7P136 实现精确墨量监控